home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 007 / separate.lqr / separate.lbr / convrt.doc next >
Text File  |  2011-02-04  |  2KB  |  60 lines

  1. {----------------------------------------------------------------
  2.        This is an example of an external and the program that
  3. calls it.
  4. ----------------------------------------------------------------}
  5. {
  6. PROGRAM callable;
  7.  
  8.   TYPE
  9.     string80 = string[ 80 ];
  10.  
  11.   PROCEDURE UpShift( var buffer : string80 );
  12.  
  13.     VAR
  14.       i : integer;
  15.  
  16.     BEGIN
  17.       For i := 1 to length( buffer ) Do
  18.         buffer[ i ] := Upcase( buffer[ i ] );
  19.     END;
  20.  
  21.   BEGIN
  22.   END.
  23. }
  24. {----------------------------------------------------------------
  25.       This is the calling program.
  26. ----------------------------------------------------------------}
  27.  
  28. PROGRAM testload;
  29.  
  30.   TYPE
  31.     str80 = string[ 80 ];
  32.  
  33.   VAR
  34.     buffer : str80;
  35.  
  36. {$ILOADER.INC}     { This is the loader that changes the jump }
  37.                    { table in the external subprogram         }
  38.  
  39.   PROCEDURE UpShift( var buffer : str80 ); external 'call.com';
  40.  
  41.   BEGIN
  42.     Load( ofs( Upshift ));  { Set up the jump table }
  43.     WRITELN; WRITELN;
  44.     buffer := 'hello';
  45.     writeln( buffer );
  46.     Upshift( buffer );      { Call the external procedure }
  47.     writeln( buffer );      { Check to see if it worked }
  48.   END.
  49.  
  50. Note : To get CONVERT.PAS to run, it is absolutely necessary to be sure that
  51.        the CONST LibrarySize is set to the end address of the Turbo run-time
  52.        library (see consideration #4 of the opening comments of program
  53.        CONVERT.PAS found in file CONVRT.PAS).  If the address for the
  54.        implementation you have is not listed, you can find it by using DEBUG
  55.        to look at TURBO.COM or a .COM file generated by it.  The first command
  56.        in the file is a JMP to the desired address.  Record that and use it as
  57.        the value of LibrarySize in program CONVERT.PAS.
  58.   While ( temp <> nil ) and ( i <= numcalls ) Do
  59.         Begin
  60.           If (( temp^.byte_val = $E8 ) or ( temp^.by